package br.com.senac.academicnet.view.curso;

import br.com.senac.academicnet.model.CursoBO;
import br.com.senac.academicnet.model.entidades.CursoVO;

import java.util.ArrayList;
import java.util.List;

import javax.swing.ComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.event.ListDataListener;

public class CursoComboBoxModel implements ComboBoxModel {

	private CursoVO cursoSelecionado;
	private List<CursoVO> cursos;         

	public CursoComboBoxModel(List<CursoVO> cursos) {  
		this.cursos = new ArrayList<>(cursos);  
	}    
	
	private String getCodigoNomeCurso(CursoVO curso){
		if(curso != null){
			return curso.getCodigo() + " - "+ curso.getNome();
		}else{
			return "";
		}
	}
	
	public CursoVO getCurso(){
		return cursoSelecionado;
	}
	
	public void setCurso(CursoVO curso){
		this.setSelectedItem(getCodigoNomeCurso(curso));
	}


	@Override
	public void addListDataListener(ListDataListener arg0) {
		// TODO Auto-generated method stub

	} 
	
	@Override
	public Object getElementAt(int i) {
		return getCodigoNomeCurso(cursos.get(i));
	}

	@Override
	public int getSize() {
		return cursos.size();
	}

	@Override
	public void removeListDataListener(ListDataListener arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public Object getSelectedItem() {
		return getCodigoNomeCurso(cursoSelecionado);
	}


	@Override
	public void setSelectedItem(Object curso) {
		String strCurso = curso.toString().split("-")[0].trim();
		int codigo = Integer.valueOf(strCurso);
		try {
			cursoSelecionado = CursoBO.getCurso(codigo);
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null,"Erro ao retornar curso: "+ e.getMessage());
		}
		
		//cursoSelecionado = (CursoVO) curso;
	}  

}
